Add backwards compat back
authorMatthias Clasen <mclasen@redhat.com>
Mon, 18 Apr 2016 18:09:41 +0000 (14:09 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 18 Apr 2016 18:09:41 +0000 (14:09 -0400)
Apparently, there's lots of font: "pango font description" out there,
so keep parsing this, with a deprecation warning.

gtk/gtkcssshorthandpropertyimpl.c

index 2714d680cd42dc5b25abee390991623f7221e7f8..4886395ee83d79b75d1fd10c96ebbded8c9fde6f 100644 (file)
@@ -424,6 +424,54 @@ parse_border (GtkCssShorthandProperty  *shorthand,
   return TRUE;
 }
 
+static gboolean
+parse_font_with_pango (GtkCssShorthandProperty  *shorthand,
+                       GtkCssValue             **values,
+                       GtkCssParser             *parser)
+{
+  PangoFontDescription *desc;
+  guint mask;
+  char *str;
+
+  str = _gtk_css_parser_read_value (parser);
+  if (str == NULL)
+    return FALSE;
+
+  desc = pango_font_description_from_string (str);
+  g_free (str);
+
+  mask = pango_font_description_get_set_fields (desc);
+
+  if (mask & PANGO_FONT_MASK_FAMILY)
+    {
+      values[0] = _gtk_css_array_value_new (_gtk_css_string_value_new (pango_font_description_get_family (desc)));
+    }
+  if (mask & PANGO_FONT_MASK_STYLE)
+    {
+      values[1] = _gtk_css_font_style_value_new (pango_font_description_get_style (desc));
+    }
+  if (mask & PANGO_FONT_MASK_VARIANT)
+    {
+      values[2] = _gtk_css_font_variant_value_new (pango_font_description_get_variant (desc));
+    }
+  if (mask & PANGO_FONT_MASK_WEIGHT)
+    {
+      values[3] = _gtk_css_font_weight_value_new (pango_font_description_get_weight (desc));
+    }
+  if (mask & PANGO_FONT_MASK_STRETCH)
+    {
+      values[4] = _gtk_css_font_stretch_value_new (pango_font_description_get_stretch (desc));
+    }
+  if (mask & PANGO_FONT_MASK_SIZE)
+    {
+      values[5] = _gtk_css_number_value_new ((double) pango_font_description_get_size (desc) / PANGO_SCALE, GTK_CSS_PX);
+    }
+
+  pango_font_description_free (desc);
+
+  return TRUE;
+}
+
 static gboolean
 parse_font (GtkCssShorthandProperty  *shorthand,
             GtkCssValue             **values,
@@ -462,6 +510,19 @@ parse_font (GtkCssShorthandProperty  *shorthand,
   while (parsed_one && !value_is_done_parsing (parser));
 
   values[5] = gtk_css_font_size_value_parse (parser);
+
+  if (values[1] == NULL && values[2] == NULL && values[3] == NULL &&
+      values[4] == NULL && values[5] == NULL)
+    {
+      if (parse_font_with_pango (shorthand, values, parser))
+        {
+          _gtk_css_parser_error_full (parser,
+                                      GTK_CSS_PROVIDER_ERROR_DEPRECATED,
+                                      "Using Pango syntax for the font: style property is deprecated; please use CSS syntax");
+          return TRUE;
+        }
+    }
+
   values[0] = gtk_css_font_family_value_parse (parser);
 
   return values[0] != NULL && values[5] != NULL;